package com.thinkgem.jeesite.modules.erp.dao;

import java.util.List;
import java.util.Map;

import com.thinkgem.jeesite.common.persistence.CrudDao;
import com.thinkgem.jeesite.common.persistence.annotation.MyBatisDao;
import com.thinkgem.jeesite.modules.erp.entity.Compare;
import com.thinkgem.jeesite.modules.erp.entity.Department;
import com.thinkgem.jeesite.modules.erp.entity.Goods;
import com.thinkgem.jeesite.modules.erp.entity.GoodsType;
import com.thinkgem.jeesite.modules.erp.entity.MaterialType;
import com.thinkgem.jeesite.modules.erp.entity.Order;
import com.thinkgem.jeesite.modules.erp.entity.OutAndInWarehouseOrder;
import com.thinkgem.jeesite.modules.erp.entity.User;
import com.thinkgem.jeesite.modules.oa.entity.Leave;

@MyBatisDao
public interface GoodsTypeDao{

	//查询出物品类型树形
	List<GoodsType> queryGoodsTree(Map<String, Object> map);

	//查询出本级下面的物品
	GoodsType queryLinkGoods(Map<String, Object> map);

	//查询出本级下面的下级信息
	List<GoodsType> queryLinkType(Map<String, Object> map);

	//第二次查询返回本级下面的物品
	List<GoodsType> queryLinkGoodsOt(Map<String, Object> map);

	List<OutAndInWarehouseOrder> goodsStatistics(OutAndInWarehouseOrder order);

	List<Goods> dimQueryLinkGoods(Map<String, Object> map);

	List<Goods> dimQueryLinkGoodsByNames(List<String> list);

	List<Goods> queryResidue(Map<String, Object> map);

	//查询总数
	Integer querySum(Map<String, Object> map);

	Integer querySum2(Map<String, Object> map);

	//分页查询对应的数据
	List<Goods> ajQueryResidue(Map<String, Object> map);

	//分页查询对应的数据
	List<Goods> ajQueryResidue2(Map<String, Object> map);

	//删除物料
	void deleteGoods(String goodsCode);

	//校验物料编号或名称是否重复
	String isSaveGoodsRepeat(Goods goods);
	
	//新增物料
	void saveGoods(Goods goods);
	
	//修改物料
	void updateGoods(Goods goods);

	String isSaveMaterialRepeat(MaterialType type);

	void addMaterial(MaterialType type);

	void updateMaterial(MaterialType type);

	void updateClass(List<Map<String, Object>> list);

	void deleteAllClass();

	List<String> queryAllInventory();

	List<Compare> queryAllInventoryCompare();

	void upateInventory(List<Compare> updateList);

	void insertInventory(List<Map<String, Object>> insertList);

	void deleteInventory(Map<String, Object> map);

	List<OutAndInWarehouseOrder> queryAllOrders(Order order);

	List<OutAndInWarehouseOrder> queryOrdersInfo(Order order);




	



}
